package com.hzj.springcloud.controller;

import com.hzj.springcloud.pojo.Dept;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

import java.util.List;


@Controller
@RestController
public class DeptConsumerController {
    @Autowired
    RestTemplate restTemplate;//RestTemplate默认没有被注入到spring容器需要将RestTemplate注入到容器
    //    private final String REST_URL_PREFIX = "http://localhost:8001/";//url前缀
    //使用Ribbon时就不能使用路径了，因为路径只能对应一个eureka注册中心，应该使用服务名(eureka页面中的application服务名称)，一般为项目名全大写
    private final String REST_URL_PREFIX = "http://SPRINGCLOUD-PROIVDER-DEPT-8001/";

    @GetMapping("consumer/dept/get/{id}")
    public Dept getDeptById(@PathVariable("id") int id) {
        //通过get方式从http调用获取数据getForObject(提供者的url地址, 返回类型.class)
        Dept dept = restTemplate.getForObject(REST_URL_PREFIX + "dept/get/" + id, Dept.class);
        return dept;
    }

    @PostMapping("consumer/dept/add")
    public int getDeptById(Dept dept) {
        //通过post方式从http调用获取数据postForObject(提供者的url地址, 传递的参数, 返回类型.class)
        Integer integer = restTemplate.postForObject(REST_URL_PREFIX + "dept/add", dept, Integer.class);
        return integer;
    }

    @RequestMapping("/consumer/dept/list")
    public List<Dept> show() {
        //通过get方式从http调用获取数据getForObject(提供者的url地址, 返回类型.class)
        List list = restTemplate.getForObject(REST_URL_PREFIX + "dept/list", List.class);
        return list;
    }
}
